/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mythread;

/**
 *
 * @author Minh
 */
class MyThread1 implements Runnable {
  Thread thrd;
  boolean suspended;
  boolean stopped;

  MyThread1(String name) {
    thrd = new Thread(this, name);
    suspended = false;
    stopped = false;
    thrd.start();
  }

  public void run() {
    try {
      for (int i = 1; i < 10; i++) {
        System.out.print(i);
        Thread.sleep(50);
        synchronized (this) {
          while (suspended)
            wait();
          if (stopped)
            break;
        }
      }
    } catch (InterruptedException exc) {
      System.out.println(thrd.getName() + " interrupted.");
    }
    System.out.println("\n" + thrd.getName() + " exiting.");
  }

  synchronized void stop() {
    stopped = true;
    suspended = false;
    notify();
  }

  synchronized void suspend() {
    suspended = true;
  }

  synchronized void resume() {
    suspended = false;
    notify();
  }
}

public class MyThread {
  public static void main(String args[]) throws Exception {
    MyThread1 mt = new MyThread1("MyThread");
    Thread.sleep(100);
     
    mt.suspend();
   System.out.println("Thread suspend ");
    Thread.sleep(100);
     mt.stop();
    mt.resume();
      System.out.println("Thread resumse ");
    Thread.sleep(100);

    mt.suspend();
    Thread.sleep(100);

    mt.resume();
    Thread.sleep(100);
    System.out.println("Thread Stop ");
    mt.stop();
  }
}